package com.feng.rabbitmq.five;

import com.feng.rabbitmq.utiils.RabbitMQUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;

/**
 * 消息接收
 * 2021-12-09 20:42
 */
public class ReceiveLog02 {

    //交换机的名称
    public static final String EXCHANGE_NAME = "logs";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitMQUtils.getChannel();
        //声明一个交换机
        channel.exchangeDeclare(EXCHANGE_NAME,"fanout");
        //声明一个队列 临时队列
        /**
         * 水生成一个临时队列、队列的名称是随机的
         * 当消费者断开与队列的连接的时候队列就自动删除
         */
        String queueName = channel.queueDeclare().getQueue();
        /**
         * 绑定交换机与队列
         */
        channel.queueBind(queueName,EXCHANGE_NAME,"");
        System.out.println("等待接收消息，把接收到的消息打印在屏幕上...");

        //接收消息
        DeliverCallback deliverCallback = (consumerTag,message) -> {
            System.out.println("ReceiveLog02控制台接收到的消息："+new String(message.getBody()));
        };
        channel.basicConsume(queueName,true,deliverCallback,consumerTag ->{
            System.out.println("消费者取消回调："+consumerTag);
        });

    }
}
